From a4d6f3d21c89c8d302774c3561c8398ce0d4b5d9 Mon Sep 17 00:00:00 2001 From: "cl349@firebug.cl.cam.ac.uk" Date: Wed, 25 May 2005 17:18:43 +0000 Subject: [PATCH] bitkeeper revision 1.1550.1.4 (4294b3735gOYxynlbg6ebX3oag6sHQ) relocate.py, SrvDomain.py, XendDomain.py: Support vm relocation using XendCheckpoint. Signed-off-by: Christian Limpach --- tools/python/xen/xend/XendDomain.py | 6 ++++++ tools/python/xen/xend/server/SrvDomain.py | 10 +--------- tools/python/xen/xend/server/relocate.py | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index 55553809d3..8bc5092e18 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -14,6 +14,7 @@ import time import xen.lowlevel.xc; xc = xen.lowlevel.xc.new() +from xen.xend.server import relocate import sxp import XendRoot; xroot = XendRoot.instance() import XendCheckpoint @@ -510,6 +511,11 @@ class XendDomain: # Need a cancel too? # Don't forget to cancel restart for it. dominfo = self.domain_lookup(id) + + port = xroot.get_xend_relocation_port() + sock = relocate.setupRelocation(dst, port) + + XendCheckpoint.save(self, sock.fileno(), dominfo) return None def domain_save(self, id, dst, progress=False): diff --git a/tools/python/xen/xend/server/SrvDomain.py b/tools/python/xen/xend/server/SrvDomain.py index 42531d54ab..eb05c17d36 100644 --- a/tools/python/xen/xend/server/SrvDomain.py +++ b/tools/python/xen/xend/server/SrvDomain.py @@ -75,15 +75,7 @@ class SrvDomain(SrvDir): ['destination', 'str'], ['live', 'int'], ['resource', 'int']]) - info = fn(req.args, {'dom': self.dom.id}) - #req.setResponseCode(http.ACCEPTED) - host = info.dst_host - port = info.dst_port - dom = info.dst_dom - url = "http://%s:%d/xend/domain/%d" % (host, port, dom) - req.setHeader("Location", url) - print 'do_migrate> url=', url - return url + return fn(req.args, {'dom': self.dom.id}) def op_pincpu(self, op, req): fn = FormFn(self.xd.domain_pincpu, diff --git a/tools/python/xen/xend/server/relocate.py b/tools/python/xen/xend/server/relocate.py index f41872c385..07cd5e7fbb 100644 --- a/tools/python/xen/xend/server/relocate.py +++ b/tools/python/xen/xend/server/relocate.py @@ -1,3 +1,5 @@ + +import socket import sys import StringIO @@ -123,3 +125,15 @@ def listenRelocation(): port = xroot.get_xend_relocation_port() interface = xroot.get_xend_relocation_address() reactor.listenTCP(port, factory, interface=interface) + +def setupRelocation(dst, port): + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((dst, port)) + except socket.error, err: + raise XendError("can't connect: %s" % err[1]) + + sock.send("receive\n") + print sock.recv(80) + + return sock -- 2.30.2